Recently due to the emergence of distributed computing at data centers, a scalable Ethernet switch network that has congestion alleviation capability becomes desirable. Connecting Ethernet switches in a fat-tree topology and managing them as a typical Local Area Networks (LANs) with spanning tree protocol (STP) or as a typical Internet Protocol (IP) subnets with routing protocols has been known to allow an Ethernet switch network to grow in scale. However, there are short-comings associated with that. For example, the switching paths among end-stations are static, and the network therefore is susceptible to network congestion without alleviation.
Software defined networking (SDN) is an approach to building a computer network that separates and abstracts elements of the networking systems. It has become more important with the emergence of virtualization where virtual machines (VMs) may be dynamically spawned or moved, to which the network needs to quickly respond. SDN decouples the system that makes decisions about where traffic is sent (i.e., the control plane) from the system that forwards traffic to the selected destination (i.e., the data plane). OpenFlow is a communications protocol that enables the control plane to access and configure the data plane.
Recently, there have been commodity OpenFlow Ethernet switches in the market. Those switches are relatively low-cost, but they also have severe limitations in terms of the number of classification entries and the variety of classification keys. Supposedly, an OpenFlow device offers the ability of controlling the traffic by flows. The ability can be utilized in alleviating congestion in the case of a switch fabric. The severe limitations of those switches greatly discount the ability because the number of flows that can be configured on those switches is relatively small, e.g. in thousands. Those limitations are inherent in the hardware designed and have nothing to do with OpenFlow, and OpenFlow is still good for enabling the control plane to configure the data plane. However, the assumption that the control plan can configure many (e.g. millions) of flows via OpenFlow or even any other communications protocol functionally similar to OpenFlow to the data plane may not hold. In this invention, we disclose a system and methods of using commodity switches to produce a scalable, load-balanced Ethernet switch fabric, taking into considerations the limitations of the commodity switches and the requirements of high availability.